AWK এর একটি অন্যতম শক্তিশালী দিক হল এর আউটপুট ফরম্যাটিং ক্ষমতা। AWK ব্যবহার করে আপনি ডেটা প্রিন্ট করার সময় বিভিন্ন ফরম্যাটিং নিয়ম প্রয়োগ করতে পারেন। এটি আউটপুটকে আরও পঠনযোগ্য ও উপস্থাপনযোগ্য করে তোলে।
AWK এ সাধারণত আউটপুট ফরম্যাটিং করতে print
এবং printf
ব্যবহার করা হয়। print
ফাংশন সহজ এবং দ্রুত, যেখানে printf
আরও নিয়ন্ত্রিত এবং ফরম্যাটেড আউটপুট তৈরি করতে ব্যবহৃত হয়।
print
ফাংশনprint
ফাংশন AWK এ সহজ এবং সাধারণ আউটপুট প্রিন্ট করার জন্য ব্যবহৃত হয়। এটি ভিন্ন ভিন্ন ফিল্ড এবং স্ট্রিং একত্রিত করে প্রিন্ট করতে পারে।
awk '{print $1, $2}' filename.txt
এই কমান্ডটি প্রতিটি লাইনের প্রথম এবং দ্বিতীয় ফিল্ড স্পেস দিয়ে আলাদা করে প্রিন্ট করবে।
printf
ফাংশনprintf
ফাংশন আরও উন্নত আউটপুট ফরম্যাটিং প্রদান করে। এটি C প্রোগ্রামিং ভাষার printf
ফাংশনের মতোই কাজ করে এবং বিভিন্ন ফরম্যাট স্পেসিফায়ার ব্যবহার করতে পারে।
awk '{printf "Name: %s, Age: %d\n", $1, $2}' filename.txt
এই কমান্ডটি প্রতিটি লাইনের প্রথম ফিল্ডকে নাম এবং দ্বিতীয় ফিল্ডকে বয়স হিসেবে ফরম্যাট করে প্রিন্ট করবে।
AWK এ আউটপুটের ফিল্ড এবং রেকর্ড সেপারেটর নির্ধারণ করতে OFS
(Output Field Separator) এবং ORS
(Output Record Separator) ভেরিয়েবল ব্যবহার করা হয়।
awk 'BEGIN {OFS = ", "} {print $1, $2, $3}' filename.txt
এটি প্রতিটি ফিল্ডের মধ্যে কমা এবং স্পেস দিয়ে আউটপুট প্রিন্ট করবে।
AWK এ ফরম্যাটেড আউটপুট তৈরিতে নির্দিষ্ট চওড়ার ফরম্যাট ব্যবহার করা যায়। আপনি প্রতিটি ফিল্ডকে নির্দিষ্ট চওড়ার স্পেস বরাদ্দ করতে পারেন।
awk '{printf "%-10s %-5d\n", $1, $2}' filename.txt
এটি প্রথম ফিল্ডকে ১০ ক্যারেক্টারের এবং দ্বিতীয় ফিল্ডকে ৫ ক্যারেক্টারের চওড়া করে প্রিন্ট করবে। %-
ফ্ল্যাগটি বামপাশে সমন্বয় করে।
সংখ্যার আউটপুট ফরম্যাটিং printf
ফাংশনের মাধ্যমে নিয়ন্ত্রিত হতে পারে।
awk '{printf "Value: %.2f\n", $3}' filename.txt
এটি তৃতীয় ফিল্ডের সংখ্যা দুই দশমিক পর্যন্ত ফরম্যাট করে প্রিন্ট করবে।
AWK এর মাধ্যমে আউটপুট সরাসরি একটি ফাইলে লেখা যায়।
awk '{print $1, $2 > "output.txt"}' filename.txt
এটি filename.txt
ফাইলের প্রথম এবং দ্বিতীয় ফিল্ড output.txt
ফাইলে লিখবে।
AWK এ আউটপুট ফরম্যাটিং একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডেটাকে আরও পঠনযোগ্য এবং প্রেজেন্টেবল করে। print
এবং printf
ফাংশনের মাধ্যমে বিভিন্ন ফরম্যাটিং নিয়ম প্রয়োগ করা যায়। এছাড়াও, OFS
এবং ORS
ভেরিয়েবল ব্যবহার করে আউটপুটের ফিল্ড এবং রেকর্ড সেপারেটর নির্ধারণ করা সম্ভব। AWK এর এই ফরম্যাটিং ক্ষমতা ডেটা বিশ্লেষণ ও রিপোর্ট তৈরিতে কার্যকর ভূমিকা পালন করে।
printf
হল একটি ফাংশন যা স্ট্রিং এবং ডেটা আউটপুট করার জন্য ব্যবহার করা হয়। এটি বিভিন্ন প্রোগ্রামিং ভাষায় পাওয়া যায় এবং স্ট্রিং আউটপুটকে নির্দিষ্ট ফরম্যাটে প্রদর্শন করতে ব্যবহার করা হয়। AWK এবং অন্যান্য প্রোগ্রামিং ভাষায় printf
ফাংশন ব্যবহার করে বিভিন্ন ধরনের আউটপুট ফরম্যাটিং করা সম্ভব। printf
সাধারণ print
স্টেটমেন্টের তুলনায় বেশি নিয়ন্ত্রণ প্রদান করে।
printf
ফাংশনের সাধারণ কাঠামো নিম্নরূপ:
printf "format", variable1, variable2, ...
এখানে:
%d
, %s
, %f
ইত্যাদি ব্যবহার করে বিভিন্ন ধরনের ডেটা ফরম্যাট করে।%s
: স্ট্রিং আউটপুটের জন্য।%d
: পূর্ণসংখ্যা আউটপুটের জন্য।%f
: ভগ্নাংশ সংখ্যা আউটপুটের জন্য।%.nf
: ভগ্নাংশ সংখ্যার n সংখ্যা পর্যন্ত দশমিক প্রদর্শন করার জন্য।%x
: হেক্সাডেসিমাল সংখ্যা আউটপুটের জন্য।awk 'BEGIN {
name = "Alice";
age = 25;
printf "Name: %s, Age: %d\n", name, age;
}'
ফলস্বরূপ:
Name: Alice, Age: 25
awk 'BEGIN {
pi = 3.14159265359;
printf "Pi to 2 decimal places: %.2f\n", pi;
}'
ফলস্বরূপ:
Pi to 2 decimal places: 3.14
awk 'BEGIN {
num1 = 123;
num2 = 4567;
printf "%10d\n%10d\n", num1, num2;
}'
ফলস্বরূপ:
123
4567
এখানে, প্রতিটি সংখ্যা 10 ক্যারেক্টারের মধ্যে ডানদিকে সজ্জিত করা হয়েছে।
awk 'BEGIN {
text = "Hello";
printf "|%-10s|\n", text;
}'
ফলস্বরূপ:
|Hello |
এখানে, %-10s
ব্যবহার করে স্ট্রিংটি বাম দিকে সজ্জিত করা হয়েছে এবং 10 ক্যারেক্টারের স্পেস রাখা হয়েছে।
print
: সহজ আউটপুটের জন্য ব্যবহৃত হয় এবং নতুন লাইন দিয়ে প্রতিটি আউটপুট শেষ হয়।printf
: ফরম্যাটেড আউটপুটের জন্য ব্যবহৃত হয় এবং ব্যবহারকারীকে নতুন লাইনের জন্য \n
স্পষ্টভাবে যোগ করতে হয়।awk 'BEGIN {
print "Hello, World!";
printf "Hello, World!\n";
}'
উপরের উদাহরণে print
স্বয়ংক্রিয়ভাবে নতুন লাইন যুক্ত করে, কিন্তু printf
-এ ব্যবহারকারীকে নতুন লাইনের জন্য \n
যোগ করতে হয়েছে।
printf
ফাংশন স্ট্রিং এবং ডেটা আউটপুটের জন্য একটি অত্যন্ত শক্তিশালী টুল, যা ব্যবহারকারীদের আউটপুট ফরম্যাট করার জন্য বেশি নিয়ন্ত্রণ দেয়। এটি ফরম্যাট স্পেসিফায়ার ব্যবহার করে আউটপুটকে সাজানো এবং নির্দিষ্ট ফরম্যাটে প্রদর্শন করার সুযোগ প্রদান করে। printf
এর সাহায্যে প্রোগ্রামাররা পেশাদারী এবং নিয়ন্ত্রিত আউটপুট তৈরি করতে পারেন।
AWK তে Output Field Separator (OFS)
এবং Output Record Separator (ORS)
হল দুটি গুরুত্বপূর্ণ ভেরিয়েবল যা আউটপুট ফরম্যাটিং নিয়ন্ত্রণ করতে ব্যবহৃত হয়। OFS
আউটপুটে প্রতিটি ফিল্ডের মধ্যে আলাদা করার জন্য ব্যবহৃত হয়, আর ORS
আউটপুটে প্রতিটি রেকর্ডের পরে কী বসানো হবে তা নির্দেশ করে।
OFS
ব্যবহার করা হয় আউটপুটে বিভিন্ন ফিল্ডের মধ্যে কী বসানো হবে তা নির্ধারণ করতে। ডিফল্টভাবে, AWK তে OFS
একটি স্পেস হিসেবে সেট করা থাকে, তবে এটি কাস্টমাইজ করা যেতে পারে।
awk 'BEGIN { OFS = ", " }
{
print $1, $2, $3
}' data.txt
এখানে, আউটপুটে প্রতিটি ফিল্ডের মধ্যে একটি কমা এবং স্পেস যোগ করা হবে। উদাহরণস্বরূপ, $1
, $2
, এবং $3
কলামগুলো আউটপুটে কমা দিয়ে আলাদা হয়ে প্রিন্ট হবে।
ORS
ব্যবহার করা হয় আউটপুটে প্রতিটি রেকর্ডের শেষে কী বসানো হবে তা নির্দেশ করতে। ডিফল্টভাবে, AWK তে ORS
একটি নিউলাইন হিসেবে সেট করা থাকে।
awk 'BEGIN { ORS = "\n\n" }
{
print $0
}' data.txt
এখানে, প্রতিটি রেকর্ডের পরে দুটি নিউলাইন যোগ করা হবে, ফলে আউটপুটে প্রতিটি রেকর্ডের মধ্যে একটি ফাঁকা লাইন থাকবে।
awk 'BEGIN { OFS = " | "; ORS = "\n---\n" }
{
print $1, $2, $3
}' data.txt
এখানে, প্রতিটি ফিল্ডের মধ্যে একটি পাইপ (|
) সেপারেটর যোগ করা হয়েছে এবং প্রতিটি রেকর্ডের পরে \n---\n
আউটপুটে যুক্ত করা হয়েছে। এর ফলে আউটপুটটি হবে:
Field1 | Field2 | Field3
---
Field1 | Field2 | Field3
---
OFS
এবং ORS
ব্যবহার করে আউটপুটকে সহজে পঠনযোগ্য ও কাস্টমাইজ করা যায়। উদাহরণস্বরূপ, CSV ফাইল তৈরি করতে OFS
কে কমা হিসেবে ব্যবহার করা যেতে পারে, অথবা রেকর্ডের মধ্যে অতিরিক্ত স্পেস যোগ করতে ORS
ব্যবহার করা যেতে পারে।
Output Field Separator (OFS)
এবং Output Record Separator (ORS)
AWK তে আউটপুট ফরম্যাটিং নিয়ন্ত্রণ করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। OFS
প্রতিটি ফিল্ডের মধ্যে সেপারেটর যোগ করতে ব্যবহৃত হয়, আর ORS
প্রতিটি রেকর্ডের পরে কী যোগ হবে তা নির্ধারণ করে। এই ভেরিয়েবলগুলি ব্যবহারকারীদের আউটপুটকে আরও নিয়ন্ত্রিত ও কাঙ্ক্ষিত ফরম্যাটে উপস্থাপন করতে সাহায্য করে।
AWK প্রোগ্রামিং ভাষায় টেক্সট প্রিন্ট করার সময় বিভিন্ন ধরনের ফরম্যাটিং এবং অ্যালাইনমেন্ট করা সম্ভব। এটি বিশেষত রিপোর্ট জেনারেশন বা ডেটা আউটপুট করার সময় উপযোগী। AWK এ printf
ফাংশন ব্যবহার করে ফরম্যাট করা আউটপুট তৈরি করা যায়, যা C প্রোগ্রামিং ভাষার printf
ফাংশনের মতো কাজ করে।
printf
ফাংশন ব্যবহারprintf
ফাংশন ব্যবহার করে টেক্সট ফরম্যাট করা যায়। এটি আউটপুটের ফরম্যাট নির্ধারণ করার জন্য বিভিন্ন ফরম্যাট স্পেসিফায়ার ব্যবহার করে।
%s
: স্ট্রিং ফরম্যাট%d
: ইন্টিজার ফরম্যাট%f
: ফ্লোট ফরম্যাট%c
: একক অক্ষর ফরম্যাটprintf
ফাংশনের ফরম্যাট স্পেসিফায়ার ব্যবহার করে টেক্সট ডান, বাম, বা কেন্দ্রীয়ভাবে সাজানো যায়।
awk '{printf "%10s %10s\n", $1, $2}' filename.txt
এখানে, %10s
স্পেসিফায়ারটি ১০ স্পেসের মধ্যে ডানদিকে অ্যালাইন করে ফিল্ড প্রিন্ট করবে।
awk '{printf "%-10s %-10s\n", $1, $2}' filename.txt
এখানে, %-10s
স্পেসিফায়ারটি ১০ স্পেসের মধ্যে বামদিকে অ্যালাইন করে ফিল্ড প্রিন্ট করবে।
ফরম্যাট স্পেসিফায়ার ব্যবহার করে ফিল্ডের প্রস্থ এবং দশমিক সংখ্যা সঠিকতা নির্ধারণ করা যায়।
awk '{printf "%-10s %.2f\n", $1, $3}' filename.txt
এখানে, $3
ফিল্ডটি দশমিকের পর দুটি সংখ্যা সহ ফরম্যাট করা হবে।
AWK এর মাধ্যমে সজ্জিত টেবিল আউটপুট তৈরি করা সম্ভব, যা একটি সহজ এবং পরিষ্কার ফরম্যাটে ডেটা উপস্থাপন করতে সাহায্য করে।
awk 'BEGIN {printf "%-15s %-15s %-10s\n", "Name", "Department", "Salary"}
{
printf "%-15s %-15s $%9.2f\n", $1, $2, $3
}' filename.txt
এখানে, Name
, Department
, এবং Salary
শিরোনামগুলি ১৫ স্পেস প্রস্থে বাম অ্যালাইন করা হয়েছে এবং Salary
৯ স্পেস প্রস্থে ডান অ্যালাইন করা হয়েছে ও দশমিকের পরে দুটি সংখ্যা প্রদর্শন করা হয়েছে।
AWK এ printf
ফাংশনের মাধ্যমে টেক্সটের মধ্যে নির্দিষ্ট স্পেস যোগ করা যায়।
awk '{printf "%s %s\n", $1, $2}' filename.txt
এখানে, প্রথম এবং দ্বিতীয় ফিল্ডের মধ্যে চারটি স্পেস যোগ করে প্রিন্ট করা হবে।
AWK এ printf
ফাংশনের মাধ্যমে টেক্সট অ্যালাইনমেন্ট এবং ফরম্যাটিং করা অত্যন্ত কার্যকর। এটি ব্যবহার করে ডেটা উপস্থাপনকে আরও সুন্দর ও পরিষ্কার করা যায়। AWK এর এই ক্ষমতা বিশেষত রিপোর্ট জেনারেশন, ডেটা বিশ্লেষণ, এবং প্রফেশনাল আউটপুট ফরম্যাট তৈরিতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
AWK ব্যবহার করে কাস্টম আউটপুট জেনারেশন খুবই সহজ এবং কার্যকর। বিভিন্ন কলাম থেকে ডেটা সংগ্রহ করে, ফরম্যাট করে, এবং আপনার প্রয়োজন অনুযায়ী আউটপুট তৈরি করা যায়। AWK এর বিল্ট-ইন ফাংশন print
এবং printf
ব্যবহার করে আউটপুটকে কাস্টমাইজ করা যায়।
ধরা যাক, আপনার কাছে একটি ফাইল students.txt
আছে, যেখানে প্রতিটি লাইনে ছাত্রের নাম এবং নম্বর আছে:
John 85
Emily 92
Mark 76
Sophia 89
আমরা চাই আউটপুটে নাম এবং নম্বর কাস্টম ফরম্যাটে প্রিন্ট করতে, যেখানে প্রতিটি লাইনের ফরম্যাট হবে: Name: John, Score: 85
awk '{print "Name: " $1 ", Score: " $2}' students.txt
ফলাফল:
Name: John, Score: 85
Name: Emily, Score: 92
Name: Mark, Score: 76
Name: Sophia, Score: 89
printf
ব্যবহার করে ফরম্যাটেড আউটপুটAWK এর printf
ফাংশন ব্যবহার করে আরও নিখুঁতভাবে আউটপুট ফরম্যাট করা যায়। এটি C প্রোগ্রামিং ভাষার মতোই কাজ করে।
awk '{printf "Student: %-10s | Score: %3d\n", $1, $2}' students.txt
ফলাফল:
Student: John | Score: 85
Student: Emily | Score: 92
Student: Mark | Score: 76
Student: Sophia | Score: 89
এখানে %-10s
প্রথম কলামটি বামদিকে ১০ চরিত্রের জন্য ফরম্যাট করে, এবং %3d
দ্বিতীয় কলামটিকে ৩ সংখ্যার জন্য ফরম্যাট করে। \n
নতুন লাইনে চলে যাওয়ার নির্দেশ দেয়।
AWK ব্যবহার করে আপনি আউটপুটের শুরুতে একটি শিরোনাম যোগ করতে পারেন।
awk 'BEGIN {print "Name | Score"} {printf "%-10s | %3d\n", $1, $2}' students.txt
ফলাফল:
Name | Score
John | 85
Emily | 92
Mark | 76
Sophia | 89
BEGIN
ব্লকটি স্ক্রিপ্টের শুরুতে একবারই কার্যকর হয় এবং শিরোনাম প্রিন্ট করতে ব্যবহার করা হয়েছে।
ধরা যাক, আমরা শুধু সেই ছাত্রদের প্রিন্ট করতে চাই যাদের নম্বর ৮০ এর বেশি:
awk '$2 > 80 {print "Congratulations, " $1 "! You scored: " $2}' students.txt
ফলাফল:
Congratulations, Emily! You scored: 92
Congratulations, Sophia! You scored: 89
এখানে $2 > 80
শর্ত অনুযায়ী আউটপুট ফিল্টার করা হয়েছে।
AWK ব্যবহার করে আউটপুটকে একটি নতুন ফাইলে সংরক্ষণ করা যায়:
awk '{print $1, $2 > "output.txt"}' students.txt
এটি output.txt
ফাইলে প্রতিটি লাইনের প্রথম এবং দ্বিতীয় কলাম প্রিন্ট করে সংরক্ষণ করবে।
AWK ব্যবহার করে কাস্টম আউটপুট জেনারেশন খুবই সহজ। print
এবং printf
ব্যবহার করে আউটপুটের ফরম্যাট এবং স্টাইল কাস্টমাইজ করা যায়। এছাড়াও, BEGIN
এবং END
ব্লক ব্যবহার করে আউটপুটের শুরুতে এবং শেষে শিরোনাম বা উপসংহার যোগ করা যায়। AWK এর এই ক্ষমতা ব্যবহার করে আপনি আপনার ডেটা বিশ্লেষণ এবং আউটপুট জেনারেশন কাজকে আরও দ্রুত এবং কার্যকরভাবে সম্পন্ন করতে পারেন।
common.read_more